package zhh.tangbao.system.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import zhh.tangbao.system.exception.CustomerBeanException;
import zhh.tangbao.system.handler.GlobalExceptionHandler;
import zhh.tangbao.user.cache.UserCache;

/**
 * @author 粥灰灰
 * @created 2022/11/4
 * @version 1.0
 * @Description 权限验证配置，使用配置类是为了方便统一修改
 */

@Configuration
public class AuthorityConfig {

    Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @Value(value = "${custom.cache.impl}")
    private Class<? extends UserCache> bean;

    /**
     * 保存登录状态的Bean实例注册，目前有两种实现方式
     * 1、使用Cookie和Session保存和读取用户的登录状态以及其他信息
     * 2、使用Redis保存和读取用户的登录状态以及其他信息
     * @return
     */
    @Bean(name = "userCache")
    public UserCache userCacheFactory() throws IllegalAccessException, InstantiationException {
        UserCache cache = bean.newInstance();
        return cache;
    }
}
